from presenter.train_station import TrainStationPresenter

class TrainPresenter:
    """
    TrainPresenter 类用于将列车数据对象转换为字典形式，
    方便在不同模块或系统中进行数据传递和展示。
    """
    def __init__(self, data):
        """
        初始化 TrainPresenter 实例。

        Args:
            data: 列车数据对象，包含列车的各种属性，如 ID、车次、到达时间等。
        """
        self.data = data

    def as_dict(self):
        """
        将列车数据对象转换为字典形式。

        Returns:
            dict: 包含列车详细信息的字典，键有 "id"、"trainNo"、"arrTime"、
                  "depTime"、"arr"、"dep" 和 "stations"。
        """
        return {
            # 列车的唯一标识符
            "id": self.data.id,
            # 列车车次
            "trainNo": self.data.train_no,
            # 列车到达时间
            "arrTime": self.data.arrival_time,
            # 列车出发时间
            "depTime": self.data.departure_time,
            # 列车到达站
            "arr": self.data.arrival_station,
            # 列车出发站
            "dep": self.data.departure_station,
            # 列车经过的站点信息，每个站点信息通过 TrainStationPresenter 转换为字典形式
            "stations": [TrainStationPresenter(station).as_dict() for station in self.data.train_stations]
        }